package com.kaifamiao.bytestreams;

import java.io.*;

public class FileCopy {

    /**
     * 用字节流复制任意文件
     * @param src 被复制的源文件
     * @param dest 复制后得到的目标文件
     */
    public void copy(File src, File dest){
        try {
            InputStream in = new FileInputStream(src);
            OutputStream out = new FileOutputStream(dest);

            // 用于记录实际读取到的字节数
            int n ;
            // 用于记录从字节输入流中读取到的字节们
            final byte[] buffer = new byte[1024];

            // 首先从字节输入流中读取一批字节到数组中并返回实际读取到的字节数
            // 然后再判断实际读取到的字节数是否是 -1 (仅当到达流末尾时才返回-1)
            while( ( n = in.read( buffer ) ) != -1 ){
                // 将本次实际读取到的字节们写入到字节输出流中
                out.write( buffer, 0, n );
            }

            out.close();
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        File src = new File( "D:/files/小电影.mp4" );
        File dest = new File( "D:/videos", src.getName() );

        FileCopy fc = new FileCopy();
        fc.copy( src, dest );
    }

}
